Allow extra application objects to be linked against a partial link of
minios with non-global names localised. For now we assume that global
names ill be assigned a xenos_ prefix in due course. We may decide to
choose a different prefix.
Those who wish to finish the link from an external Makefile can link
their own objects against mini-os.o (which must be first in link
order!) and specify the appropriate architecture linker script.
[XEN] Fix some e820 start-of-day issues by clipping all E820_RAM
regions to be page-sized and -aligned. Signed-off-by: Keir Fraser <keir@xensource.com>
Ian Campbell [Fri, 12 Jan 2007 16:03:33 +0000 (16:03 +0000)]
[PATCH] kexec/kdump: allow zero start for crashkernel
Some architectures, notably ia64, can automatically place
the crash kernel into an appropriate place if the start
address for crashkernel is specified as zero or omitted.
E.g. crashkernel=256M or crashkernel=256M@0
While xen does not actually have support for ia64 kexec,
I am working on it. And in any case this change should be harmless.
Just a small bit of infastructure that will make things easier in the
future.
This should also be possible on x86, now relocatable kernels
are reloacatble on x86. So once xen moves up to using linux ~2.6.19
it would make sense to look into implementing this.
The patch does 3 things.
* Firstly, parse_crashkernel() is modified to allows the size and start elements of kexec_crash_area
to be set to any value, including zero. Previously if either size or
start were specified as zero, they would both end up as zero.
* Secondly, when kexec_get() is called, if either the size or start
elements of kexec_crash_area are zero, then zero is passed
back to the hypercall caller for both values.
This gives the same behaviour as having parse_crashkernel() set
size and start to zero if either of them are zero, but it allows
architecture sepcific code called between the invocation of
parse_crashkernel() and kexec_get() to modify start (and size if
there was a reason). In particular, this allows the
architecture specific code to find a good start point if 0 is
specified.
* Lastly, it ads an additional check to the x86 setup code.
As this code currently does not know how to deal with a
0 start address, it doesn't reserve memory if start is 0.
This is neccessary as previously if start was specified as zero,
parse_crashkernel() would set size to zero, but that is
no longer the case, so a stronger check is needed.
I would really appreciate it if this patch was merged,
as I don't believe it harms anything, and it does allow
a nice path for moving forwards.
linux: Add trivial forwarding of dma_{,un}map_page when not using highmem
Use non-trivial dma_{un,}map_page only when CONFIG_HIGHMEM, allowing
to not compile swiotlb_{un,}map_page in that case, which in neither
case need exporting.
[LINUX] ipv6: Disable addrconf on Xen bridge device
The ipv6-no-autoconf patch didn't disable IPv6 addrconf completely.
This means that the Xen bridge device still interfered with normal
IPv6 operation by engaging the IPv6 network with a bogus MAC address.
For details please refer to
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=200360
The following patch completely disables IPv6 on the Xen bridge device
by temporarily setting the MTU to a value less than the minimum
allowed for IPv6.
Upstream will provide a cleaner way to disable IPv6 addrconf in
future, possibly in the form of a proc sysctl. Of course if the Xen
loopback device is removed it would render this change unnecessary.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
[IA64]: noreturn cannot be used if function may return
The functions die_if_kernel and vmx_die_if_kernel can certainly
return. This disqualifies them from using the noreturn keyword
which is reserved for functions that never return.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
x86: properly handle LOCK prefix in privileged PV opcode emulation
- include LOCK prefix presence in calculation of which CR/DR is being
targeted by moves to/from these registers
- fail any other opcodes when beingused with lock prefix
While, as discussed, the performance impact of this option is
certainly higher than on native Linux, the option should not be
entirely disallowed if people want to sacrifice performance for less
lowmem pressure.
[XEN] Consistent assumption that PTEs contain MFNs in both ptwr
page-fault handler and ptwr emulation handler. Signed-off-by: Keir Fraser <keir@xensource.com>
x64 SMP Vista HVM guest uses HPET as the main system timer, and it
uses physical destination mode with broadcast to deliver the interrupts
generated by HPET. In current code, timer interrupts are injected only
to VCPU0 in vioapic.c, but this doesn't satisfy x64 SMP Vista -- when
it boots, it complains "a clock interrupt was not received on a
secondary processor within the allocated time interval" with Bug Check
0x101.
Ewan Mellor [Thu, 11 Jan 2007 19:00:35 +0000 (19:00 +0000)]
This patch does the following:
- renames the XenManagedDomain.py file to XenAPIDomain.py, since this
name better reflects its functionality/purpose
- adds domain tracking to the XenAPIDomain class so that xend-managed
domains can be deleted in an 'atexit' handler upon test case termination
- adds one basic xapi-related test which is part of the grouptests
'xapi'
- refactors the vtpm-related test using xen-api and adds it to the
grouptest 'xapi'
- adds documentation to the README for how to configure xm and xend to
use XML-RPC or Xen-API for communication
Ewan Mellor [Thu, 11 Jan 2007 18:56:59 +0000 (18:56 +0000)]
I added a parameter '-md' to 'runtest.sh' for running the xm test suite
in a mode where all created domains a created as xend-managed domains.
This patch also fixes a problem related to calling 'xm domid' on a
currently suspended domain if that domain is a managed domain. In that
case a 'None' is returned by Xend, which I default to '-1'.
Use strstr() to look for "bimodal" string in ELF notes, to allow guests to use
"yes,bimodal", so they are correctly identified as PAE on older hypervisors.
[XEN] More emulator fixes:
1. Emulate LAHF/SAHF instructions
2. #GP if instruction is longer than 15 bytes
3. Accept any number of prefix bytes (up to
15-byte total instruction length)
4. Repeated addr/data-size overrides are sticky
rather than toggling.
Ian Campbell [Wed, 10 Jan 2007 09:39:24 +0000 (09:39 +0000)]
[PATCH] kexec/kdump: remove unnecessary incusion of asm/fixmap.h
I think this a legacy of an older revision of this code,
but asm/fixmap.h does not seem to be needed in
asm-x86/x86_32/kexec.h or asm-x86/x86_64/kexec.h
That is, neither of these incarntations of kexec.h seem
to do anything related to fixmap directly or indirectly.
Ewan Mellor [Tue, 9 Jan 2007 17:25:28 +0000 (17:25 +0000)]
This simple patch allows domains created in the xm-test suite to be
created as managed domains using either a parameter to the
XenTestDomain() constructor or by setting the environment variable
XM_MANAGED_DOMAINS and running the tests with it.
[XEN] Emulate DAA/DAS the hard way. We cannot execute the instruction
directly within the emulator as it is unavailable if the emulator runs
in x86/64 mode. Signed-off-by: Keir Fraser <keir@xensource.com>
Tim Deegan [Tue, 9 Jan 2007 16:49:16 +0000 (16:49 +0000)]
[HVM] Remove unnecessary write barriers
Using a volatile pointer saves us from the compier reordering these
writes, and the processor won't let them appear out of order. Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Tim Deegan [Tue, 9 Jan 2007 13:24:45 +0000 (13:24 +0000)]
When booting via xm, only run the bootloader if it's in non-interactive mode:
otherwise we lose the user's named kernel and try to bootload the temporary
file pygrub returned.
Tim Deegan [Tue, 9 Jan 2007 13:24:40 +0000 (13:24 +0000)]
Pass in kernel/ramdisk settings to pygrub; if specified, don't try to use
grub.conf; this allows hands-off bootloading in the absence of a grub.conf.
It's also useful for specifying temporary changes etc.
Tim Deegan [Mon, 8 Jan 2007 14:24:30 +0000 (14:24 +0000)]
[HVM] Add expansion-ROM boot support again.
Boot info now stored at 0x9ff00; registers saved in HDD load code. Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
[linux build] Build Linux kernels with output files in a separate directory.
Use a single source tree (linux-2.6-xen) and use Linux' O= option to
make the build put output files in a
build-linux-$(LINUX_VER)-$(EXTRAVERSION)_$(XEN_TARGET_ARCH) directory,
making it possible to build both x86_32 and x86_64 kernels in the same
tree.
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>